/**
什么是异常
异常是阻止当前方法或作用域继续执行的问题，在程序中导致程序中断运行的一些指令。

					Object
					  |
					Throwable  父类		
 	Error								exception	
	底层错误				  受检异常（编译错误） 		非受检异常（运行错误）



try...catch
try 代码块里面是三目运算  res？X:Y   如果报错 里面的各种运算，变量 都不会影响代码块外的语句
							   如果运行正常 将参与接下来的运算和赋值

catch  后可以跟 Throwable ->Exception->具体的Exception   从大到小
	
	作用  	1.错误提示词 客户可以自定义提示词

@@@@
重点总结
1.Throwable是异常的基类，分为Error和Exception
2.Exception分为 1。编译期  受检异常  2。运行期 非受检异常
3.异常会导致程序中断，无法继续执行
4.使用try 包裹异常代码 
5.catch 可以是多个，顺序 子到父类，大放最后
6.finnaly 是异常的最终出口，不管是否有 都会执行此句，总是在return之前执行
7.throws 在方法的声明上使用， 方法中不处理异常，交给调用处处理
  throw 和throws 一起使用 抛出一个异常的实例化对象  可用e.printstacktrace()查询标注
  throw 在return后面 ，只能执行一个。				

*/	
/*
package com.leo.第六章_Eclipse与异常处理;		
public class U6_L2_异常处理 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		Try_catch div=new Try_catch();
//		div.div();
//		div.div(div.div());
//		div.div(0);
		
//		Finally exp=new Finally();
//		exp.test();

		
		Throws_throw test=new Throws_throw();
		try {
			test.test(20,0);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		test.res(test.test(20, 0));
	}

}

class Try_catch{
	int x=10;
	int y=0;
	
	public int div(){
		int res=1;
		//try 里面只要不爆异常 y=0,数学运算异常 try代码块里面的x就参与赋值
		
		//y=1;  //y=1 就没有数学异常  执行X=11;
		try {	res=x/y+10;
		
		System.out.println("x/y=res: "+res);
		x=11;
	}catch(ArithmeticException e) {   //catch 后可以跟 Throwable ->Exception->具体的Exception   从大到小
		//e.printStackTrace();  打印栈异常状态
		System.out.println("除数不能为0");
	
		
		System.out.println("res: "+res);}
		return res;
	}
	
	public void div(int res) {
		try {
			res=x/y+10;
		}catch(Exception e) {
			System.out.println("expception");
		}
		System.out.println("res: "+res);
		System.out.println("y :"+y+"\nx :"+x);
	}
}

class Finally{
	public int test() {
		int x=1;
		int y=0;
		try {
			int res=x/y;
			System.out.println("res: "+res);
			return res;
			//如果有多个catch 需要从小到大 列出可能发生的异常，不然会报错
		}catch(ClassCastException e) {
			System.out.println("类型转换异常");
		}catch(ArithmeticException e) {
			System.out.println("数学运算异常");
		}catch(Exception e) {
			//打印异常
			e.printStackTrace();
		//finnally 是代码块执行结束的统一出口 如没有异常 会在return之前执行。 (估计和线程有关？)
		}finally {
			System.out.println("方法调用结束。");
		}
		return -1;
	}
}

class Throws_throw{
	public int test(int x,int y) throws ArithmeticException{
		int res=0;
		try{
		res=x/y;
		
		}catch(ArithmeticException e) {
			e.printStackTrace();
			res+=1;
			return res;
			
		}
		
		System.out.println("throws_throw res: "+res);
		throw new ArithmeticException("除数不能为0...");
		
	}
		
	
	public void res(int res) {
		System.out.println("res: "+res);
	}
}
*/
 




